home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / cpp_libs / rjs.lha / RJS / String / tests / StringSearch.C < prev    next >
C/C++ Source or Header  |  1991-06-14  |  2KB  |  87 lines

  1. #include <iostream.h>
  2. #include <ctype.h>
  3.  
  4. #include "RJS/String.h"
  5.  
  6. int num_fail=0, num_pass=0;
  7.  
  8. #define Assert(cond) if (!(cond)) num_fail++,cerr << "Assert(" << __LINE__ << ") Failed." << endl;  else num_pass++;
  9.  
  10. #include <ctype.h>
  11.  
  12. class SSwhitespace : public StringSearch {
  13. public:
  14.     SSwhitespace(){}
  15.     int search(const String &s, int &matchlen) const ;
  16. };
  17.  
  18.  
  19.  
  20. int SSwhitespace::search(const String &s, int &len) const
  21. {
  22. len=0;
  23. int p1;
  24. StringIterator next(s);
  25. char ch;
  26.  
  27.    while (next(ch)) 
  28.     if (isspace(ch)) {
  29.           p1=next.pos();
  30.           while (next(ch) && isspace(ch));
  31.           len=next.pos()-p1;
  32.           return p1;
  33.     }
  34.    return -1;
  35.  
  36. }
  37.  
  38. int SearchInt(const String &s, int &len) const
  39. {
  40. len=0;
  41. int pos=0,p1;
  42. StringIterator next(s);
  43. char ch;
  44.   
  45.    while (next(ch)) if (isdigit(ch) || ch=='-') {
  46.       p1=next.pos();
  47.       while (next(ch) && isdigit(ch));
  48.       len=next.pos()-p1;
  49.       return p1;
  50.    }
  51.  
  52.    return -1;
  53.  
  54. }
  55.  
  56. const SSwhitespace SSwhite;
  57. const StringSearch Sint(SearchInt);
  58.  
  59. void main() 
  60. {
  61. //String s1("This           be a test");
  62.  
  63. //s1.at(SSwhite)=" ";
  64. //cout << s1 << endl;
  65.  
  66. //s1="this is 1234,not abc";
  67. //s1.at(Sint)="one two three four";
  68. //cout << s1 << endl;
  69.  
  70. String s1("one two three four");
  71.  
  72. cout << "s1.after('three') ==> " << s1.after("three") << endl;
  73.  
  74. (s1.at("three")) += "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
  75.  
  76. cout << s1 << endl;
  77.  
  78. s1="one two three four";
  79.  
  80. (s1.substr(0).substr(13,0)) += "AAAAAAAAAAAAAAAAAAAA";
  81.  
  82. cout << s1 << endl;
  83.  
  84. //cout << "Number of tests that passed ==> " << num_pass << endl;
  85. //cout << "Number of tests that failed ==> " << num_fail << endl;
  86. }
  87.